package com.wicket.okrframework.integration.dto;

import com.wicket.okrframework.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import lombok.Data;

/**
 * @desc StationDto
 * @使用场景
 */
@Data
public class StationDto extends BaseDto implements Serializable {

  /**
   * 岗位ID:
   */
  @NotNull(message = "岗位ID不能为空")
  @ApiModelProperty("岗位ID")
  private String stationId;

  /**
   * 岗位名称:
   */
  @NotNull(message = "岗位名称不能为空")
  @ApiModelProperty("岗位名称")
  private String stationName;

  /**
   * 职位ID:
   */
  @ApiModelProperty("职位ID")
  private String postId;

  /**
   * 职位名称:
   */
  @ApiModelProperty("职位名称")
  private String postName;

  /**
   * 岗位类型ID:
   */
  @ApiModelProperty("岗位类型ID")
  private String stationTypeId;

  /**
   * 岗位编号:
   */
  @ApiModelProperty("岗位编号")
  private String stationNumber;

  /**
   * 主体生命周期:
   */
  @ApiModelProperty("主体生命周期")
  private String subjectLifeCycle;

  /**
   * 操作人就职记录ID:
   */
  @ApiModelProperty("操作人就职记录ID")
  private String operationInductionId;

  /**
   * 操作时间:
   */
  @ApiModelProperty("操作时间")
  private Date operateTime;

  /**
   * 岗位职责概述
   */
  @ApiModelProperty("岗位职责概述")
  private String stationDutyDesc;

  /**
   * 岗位目标概述
   */
  @ApiModelProperty("岗位目标概述")
  private String stationTargetDesc;

  /**
   * 岗位类型名称
   */
  @ApiModelProperty("岗位类型名称")
  private String stationTypeName;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    StationDto that = (StationDto) o;
    return (
      stationId == that.stationId &&
      stationName == that.stationName &&
      postId == that.postId &&
      postName == that.postName &&
      stationTypeId == that.stationTypeId &&
      stationNumber == that.stationNumber &&
      subjectLifeCycle == that.subjectLifeCycle &&
      operationInductionId == that.operationInductionId &&
      operateTime == that.operateTime &&
      stationDutyDesc == that.stationDutyDesc &&
      stationTargetDesc == that.stationTargetDesc &&
      stationTypeName == that.stationTypeName
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      stationId,
      stationName,
      postId,
      postName,
      stationTypeId,
      stationNumber,
      subjectLifeCycle,
      operationInductionId,
      operateTime,
      stationDutyDesc,
      stationTargetDesc,
      stationTypeName
    );
  }

}
